package com.newjiabo.common.ski.media.utils;

import com.alibaba.fastjson2.JSONObject;
import com.newjiabo.common.ski.media.module.constant.MediaConstant;
import com.newjiabo.common.ski.media.module.enums.MediaOwnerTypeEnum;
import com.newjiabo.common.utils.StringUtils;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;

import javax.validation.constraints.NotNull;
import java.util.HashMap;
import java.util.Map;

/**
 * {类内容}
 *
 * @author CaoMengHui.
 * @version 1.0
 * @since 2023/9/21 14:04
 */
@Service
public class MediaRequestService {

    /**
     * 搜索media
     * https://gqbqgrzjif8.feishu.cn/docx/QbF8dcXgXozX6cxvWRfcnkmwnUd
     *
     * @param userId      用户id
     * @param ownerType   媒资所有者范围。本字段是一个枚举字段，取值参见：“附录：枚举定义 - MEDIA_OWNER_TYPE”
     * @param mediaType   媒资类型。本字段是一个枚举字段，取值参见：“附录：枚举定义 - MEDIA_TYPE”
     * @param mamEntityId 媒资实体类型。本字段是一个枚举字段，取值参见：“附录：枚举定义 - MAM_ENTITY_ID”
     * @param createTime  媒资创建时间。举例如下：>=2023-09-15 08:00:10(大于等于某个时刻，等号可以不出现)。
     *                    <=2023-09-15 08:00:10(小于等于某个时刻，等号可以不出现)
     *                    between 2023-09-15 08:00:10 and 2023-09-15 12:00:10.(时间区间)如果该字段为空，则默认查询请求当天的媒资。
     * @param ExtendMatch 扩展查询条件，形如条件表达式。具体扩展字段待定。例如：title = '中国' and mediaId == 'id' and tags in ('tag1','tag2')
     * @param sortBy      排序字段和排序顺序。多个使用英文逗号（,）分隔。注意：如果查询的ownerType为group，则意味着用户正在试图搜索匹配自己的滑雪素材，这时将强制按照置信度排序。
     * @param pageNo      当前页码。默认值为1l
     * @param pageSize    每页返回的数据条数。默认值为10，最大值为50
     * @return
     * @author CaoMengHui.
     * @date 2023/9/21 13:54
     * @see MediaOwnerTypeEnum
     */
    public JSONObject searchMedia(@NotNull String userId, @NotNull String ownerType, String mediaType,
                                  @NotNull String mamEntityId, String createTime, String ExtendMatch, String sortBy,
                                  Integer pageNo, Integer pageSize) {
        return null;
    }

    /**
     * @param userId      用户id
     * @param mediaIds    用于注册ReID的多张照片对应的媒资id，用逗号隔开，最多10个。
     * @param model       注册模式。本字段是一个枚举字段，取值参见：“附录：枚举定义 - PERSON_REGISTER_MODE” 如果该字段不填，则默认为Overwrite。
     *                    注意：只有在相同的registerDay追加照片，才使用Append。
     * @param registerDay 格式为：yyyy-MM-dd
     *                    如果该字段不填，则默认取请求调用的当天。
     * @return
     * @author CaoMengHui.
     * @date 2023/9/21 14:40
     * @see com.newjiabo.common.ski.media.module.enums.PersonRegisterMode
     */
    public JSONObject registerPerson(String userId, String mediaIds, String model, String registerDay) {

        return null;
    }

    public static String getExtendMatchStr(String snowFieldId) {
        Map<String, Object> map = new HashMap<String, Object>(1);
        map.put(MediaConstant.SNOW_FIELD_ID, snowFieldId);
        return JSONObject.toJSONString(map);
    }

}
